home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
tex
/
pil50kit.zip
/
README
< prev
Wrap
Text File
|
1992-04-09
|
7KB
|
144 lines
PIL 5.0 RELEASE
Public Domain Software
to
Parse and Generate
the
Publisher's Interchange Language
Language Version 5.0
API Version 2.0
Here is the first official release of the PIL Tool Kit.
It consists of the source code for the API, a sample main()
routines for parsing and generating, and a sample input file.
This software is distributed on either Macintosh or MS/DOS
diskettes for your convenience. The software is indentical on
both disks.
Along with this disk you should also receive a printed copy of
the documentation for PIL 5.0. That document includes examples,
the formal language specification, and the Programmers Guide to
the Toolkit. Feel free to copy and distribute this software and
documentation, as both are in the public domain.
If you do not have the documentation,you can request it from:
Aministrative Assistant to the PPISC
Quark, Inc.
300 South Jackson
Denver CO 80401
(303) 934-2211
The following source code files make up the parser, generator, and
other API functions:
pilapi.c - main API functions
pilparse.c - the parser
pilgen.c - the generator
pilglob.c - some global data
pildefs.c - definitions of all data structures
Also, two files are included which illustrate the use of the Tool Kit for
parsing and generating PIL. These are:
parmain.c - main that illustrates parsing
genmain.c - main that illustrates export of pages to PIL
And two sample input files:
bounds.pil - boundary condition tests for parser
in.pil - the example from the Language Spec.
With this release, the language version has been incremented to 5.0, to
reflect several changes and additions. The need for these changes was pointed out
during testing that was done in preparation for the initial implementation of
PIL in products under development by a number of vendors. The new syntax of the
language is detailed in the Language Spec. Briefly, these are the changes from 4.0:
Text Flows
In 4.0 it was not possible to link text containers from one layout to another
and back to the first. This has been corrected by replacing the "to" field of
the text flow with a "to-layout" and an optional "to_label" which together name
the specific text flow being linked to, and allowing a logical chain of text
containers to represented with more than one text flow on a given layout. The same
change was made to "from" field; i.e., there's now a "from-layout" and "from-label".
Object Types
In 4.0 there was an object type field which was just specified as a string.
In 5.0 the object type is one of the following:
text - an object that MAY have flowable text, a container, and a text flow
picture - an object MAY have image data or structure graphic content file or
pil-content
primitive - an object that is represented only by its object graphic, and can
not have any other content assocated with it
Shapes
Two new pseudo-shapes have been added, for use only with the object graphic.
These are "clipper-shape" and "container-shape". The purpose of these "shapes"
is to make it easy to represent a graphic which is defined as a border around
either the clipper or container of an object. This simplifies the task of import
for applications which allow placing a border around objects. Since a clipper
and a container are both closed shaped, these new "shapes" are also closed
shapes which may be stroked and filled.
INCOMPATIBILITIES WITH PREVIOUS (PRERELEASE) VERSIONS:
pil_layout_start, pil_content_start
Version 1.00 and 1.01 of the tool kit required that the application set
the version string for a pil_layout_start component or pil_content_start
component after calling pil_create_component. Version 2.0 now sets the
version string for you. Remove the code that you have that appends a version
string to the pil_layout_start and pil_content_start components.
pil_object
If you were using the objtype field by setting or reading the string that
it held, you will have to change your code to use (or ignore) the new object
types.
text_flows
The structure of the pil_text_flow has changed. If you were using this, you
will have to look at the new structures and change your code accordingly.
BUG FIXES - (The following bugs were fixed between 1.00 and 1.01 of the Tool Kit)
Several bugs have been fixed, the programmers guide has been updated
to include new platforms that the code has been ported to, and the
version number of the api has been incremented from 1.00 to 1.01 to
indicate a bug fix release.
The bug fixes are:
pilapi.c - Fixed 2 bugs in pil_set_buffer, one in pil_alloc,
that could allow pointers to improper address boundaries, and allow
the buf to be overrun by several bytes. Changed pil_api_ver to b01.01
pilgen.c - Fixed prototype for pil_put_color, and minor bug.
Fixed bug in pil_put_pathdata that treated arc radius as unsigned int.
pildefs.h - Added audit section. Fixed prototype for pil_put_color
parmain.c - Added audit trail, changed cnt_buffering_size
NOTES ON DEVELOPMENT AND PORTING
The api code was developed in THINK╩C on the Macintosh and has been
ported to the following platforms:
MS/DOS, using Turbo C and Microsoft C
Windows 3.0 using Microsoft C
Sun Unix on 3/60, Sun 4, and SparcStation, using Sun's cc and gcc
ISC System V 3.2 running on PC/AT 386 and 486 machines
For more details of the porting, see Part 4 of the PIL docmentation,
"Programmer's Guide to the Publishing Interchange Language Toolkit.".
The main programs, parmain.c and genmain.c, were not ported to Windows,
but should run in any normal sort of environment that has printf, fopen,
fread, and so on.
If you want to jump right in, try compiling the modules on your
development platform of choice. If it doesn't work the first time, then
read the manual! In particular, the sections at the end called Porting
Requirements and Porting Suggestions are required reading.
If you want to acquaint yourself with the language, look at the sample in
the language spec. (This example is also included electronically as
example.pil.)
End of README